package chen.web.message;

import java.util.Date;
import java.util.List;

import chen.web.user.Account;

public interface MessageManager {

	/**
	 * 发送消息
	 * @param message
	 */
	void send(Message message);
	
	/**
	 * 填充发件箱
	 * @param outbox
	 */
	void fill(Outbox outbox);
	
	/**
	 * 计算发送的消息总数
	 * @param acc
	 * @return
	 */
	int totalSent(Account acc);
	
	/**
	 * 填充收件箱
	 * @param inbox
	 */
	void fill(Inbox inbox);
	
	/**
	 * 根据接收者得到消息集合
	 * @param receiver			接收者帐号
	 * @param beginOffset
	 * @param count
	 * @return
	 */
	
	/**
	 * 计算接收的消息总数
	 * @param acc
	 * @return
	 */
	int totalReceived(Account acc);
	
	/**
	 * 删除消息
	 * @param message
	 */
	void delete(Message message);
	/**
	 * 得到消息
	 * @param messageId
	 * @return
	 */
	Message getMessage(int messageId);
	
	/**
	 * 获取两个用户之间的消息记录
	 * @param acc1	帐户一
	 * @param acc2	帐户二
	 * @param before 在此时间之前
	 * @param beginOffset
	 * @param count
	 * @return
	 */
	List<Message> getRecord(Account acc1, Account acc2, Date before, int beginOffset, int count);
	
	
	/**
	 * 消息已经被阅读
	 * @param message
	 */
	void hasRead(Message message);
	
	/**
	 * 获取用户收到的新短消息
	 * @param beginOffset
	 * @param count
	 * @return
	 */
	List<Message> listNewMessage(Account account, int beginOffset, int count);
	
	/**
	 * 用户未读消息数量
	 * @param acc
	 * @return
	 */
	int newMessageCount(Account acc);
	
}
